package leetcode.todo

import kotlinetc.println

//https://leetcode.com/problems/valid-anagram/

/**
Given two strings s and t , write a function to determine if t is an anagram of s.

Example 1:

Input: s = "anagram", t = "nagaram"
Output: true
Example 2:

Input: s = "rat", t = "car"
Output: false
Note:
You may assume the string contains only lowercase alphabets.

Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
 */
fun main(args: Array<String>) {
    isAnagram(s = "anagram", t = "nagaram").println()
}

fun isAnagram(s: String, t: String): Boolean {
    if (s.length != t.length) return false
    var result = true
    val table = Array('z'.toInt() + 1, { 0 })
    t.forEach {
        table[it.toInt()]++
    }

    for (i in 0 until s.length) {
        if (--table[s[i].toInt()] < 0) {
            result = false
            break
        }
    }

    return result
}